package com.jerry.wschat.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;

import java.io.Serializable;
import java.util.List;

/**
 * @author Jerry.Wu
 * @description:
 * @date 2018/8/29 18:23
 */
public interface BaseService<T, ID extends Serializable> {

    /**
     * 删除方法
     *
     * @param entity
     */
    void delete(T entity);

    /**
     * 根据id删除
     *
     * @param id
     */
    void deleteById(ID id);

    /**
     * 保存
     *
     * @param entity
     * @return
     */
    T save(T entity);

    /**
     * 读取方法
     *
     * @param id
     * @return
     */
    T load(ID id);

    /**
     * 查询所有
     *
     * @return
     */
    List<T> findAll();

    /**
     * 查询所有，排序
     *
     * @param sort
     * @return
     */
    List<T> findAll(Sort sort);

    Page<T> pageAll(Integer limit, Integer offset, String orderBy, String direction);

}
